如果一個物件擁有足夠的方法和屬性,就算他不屬於特定的類別,Python也會將他當作這個類別的物件來處理
ex:如果他走路和叫聲都像鴨子=>就是一隻鴨子
範例:兩個類別:duck & chicken
class Duck:
def walk(self):
print("鴨子在走路")
def talk(slef):
print("鴨子在呱呱叫")
class Chicken:
def walk(self):
print("雞在走路")
def talk(self):
print("雞在咕咕叫")
#即使沒有繼承關係,也可以當作同一類型的類別使用
class Person():
def catch(slef, duck):
duck.walk()
duck.talk()
duck = Duck()
person = Person()
person.catch(duck)
鴨子在走路
鴨子在呱呱叫
class Duck:
def walk(self):
print("鴨子在走路")
def talk(slef):
print("鴨子在呱呱叫")
class Chicken:
def walk(self):
print("雞在走路")
def talk(self):
print("雞在咕咕叫")
#即使沒有繼承關係,也可以當作同一類型的類別使用
class Person():
def catch(slef, duck):
duck.walk()
duck.talk()
chicken = Chicken()
person = Person()
person.catch(chicken)
雞子在走路
雞在咕咕叫
獠牙運算符=賦值表達式(:=)
<=相反=>
賦值運算子(=)
Python 3.8後加入的特性:可將辭分配給變數作為表達式的一部分
原先程式
happy = True
print(happy)
True
獠牙運算符表示法
#如果輸入=會出現錯誤,無法回傳True
print(happy := True)
True
範例原先程式:
foods = []
while Ture:
food = input('你喜歡什麼食物?')
if food == 'quit':
break
food.append(food)
print(foods)
你喜歡什麼食物?蘋果
你喜歡什麼食物?香蕉
你喜歡什麼食物?quit
['蘋果','香蕉']
獠牙運算符表示法
food = []
while (food := input('你喜歡什麼食物?')) !='quit':
foods.append(food)
print(foods)
你喜歡什麼食物?拉麵
你喜歡什麼食物?水餃
你喜歡什麼食物?quit
['拉麵','水餃']
def hello():
print("hello")
hi = hello
hi()
hello
內建函式也有相同效果
say = print
say("hello")
say("hi")